package javabase.base.client02;

/**
 * @author chengshuai
 * @date 2021/4/24 23:19
 *
 * 字符串拼接比较
 */
public class Test022 {

    public static void main(String[] args) {
        f3();
    }

    /**
     * 原因：字符串拼接时如果有字符串变量参与拼接，
     * 底层调用了StringBuffer(JDK1.5之前)或StringBuilder可变字符串处理。
     */
    public static void f3() {
        String str1 = "hello";
        String str2 = str1 + " word!";
        //底层是这样的
//        StringBuffer sb=new StringBuffer("");
//        sb.append(str1);
//        sb.append("word!");
//        str2= sb.toString();
        String str3 = "hello word!";
        System.out.println(str3 == str2);
    }

    /**
     * JVM编译器对字符串做了优化，在编译时str3就已经被优化成“hello Word！”
     * 编译期优化而已
     */
    public static void f2() {
        String str3 = "hello" + " word!";
        String str4 = "hello word!";
        System.out.println(str3 == str4);
    }

    /**
     * 没啥可说的
     */
    public static void f1() {
        String s1 = "123";
        String s2 = "123";
        // true
        System.out.println(s1 == s2);
        // true
        System.out.println(s1.equals(s2));
    }
}
